package datatypes.r2.foundation.impl;

import datatypes.r2.flavors.ST_SIMPLE;
import datatypes.r2.foundation.BAG;
import datatypes.r2.foundation.LIST;
import datatypes.r2.quantities.INT;

/**
 * An ordered collection of discrete (but not necessarily distinct) values.
 * 
 * @author Obama
 * 
 * @param <T>
 */
public class Sequence<T> extends Collection<T> implements LIST<T> {

	private static final long serialVersionUID = 1L;

	/**
	 * The first item in this sequence.
	 */
	@Override
	public T head() {
		if (!getList().isEmpty()) {
			return getList().get(0);
		} else {
			return null;
		}

	}

	/**
	 * The sequence following the first item in this sequence.
	 */
	@Override
	public LIST<T> tail() {
		if (!getList().isEmpty()) {
			getList().remove(0);
		}
		return this;
	}

	@Override
	public T item(INT index) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public INT length() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public LIST<T> subList(INT start, INT end) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public LIST<T> subList(INT start) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public ST_SIMPLE literal() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public LIST<T> promotion(T x) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public BAG<T> demotion() {
		// TODO Auto-generated method stub
		return null;
	}

}
